[IA64] fix gnttab_shared_gmfn()
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 5 Apr 2006 18:15:10 +0000 (12:15 -0600)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 5 Apr 2006 18:15:10 +0000 (12:15 -0600)
Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
xen/include/asm-ia64/grant_table.h

index 227f2e590b708c691f208b4af709d5b423420c9a..2e95872ec41fb92dbca3d8492bf9412c2b6efb89 100644 (file)
 /* Guest physical address of the grant table.  */
 #define IA64_GRANT_TABLE_PADDR (1UL << 40)
 
-#define gnttab_shared_gmfn(d, t, i)                                     \
-    ( ((d) == dom0) ?                                                   \
-      ((virt_to_maddr((t)->shared) >> PAGE_SHIFT) + (i)) :              \
-      (assign_domain_page((d), IA64_GRANT_TABLE_PADDR,                         \
-       virt_to_maddr((t)->shared)), IA64_GRANT_TABLE_PADDR >> PAGE_SHIFT) \
-    )
+#define gnttab_shared_maddr(d, t, i)                        \
+    virt_to_maddr((char*)(t)->shared + ((i) << PAGE_SHIFT))
+
+#define gnttab_shared_gmfn(d, t, i)                                          \
+    ({ ((d) == dom0) ?                                                       \
+            (virt_to_maddr((t)->shared) >> PAGE_SHIFT) + (i):                \
+            assign_domain_page((d),                                          \
+                               IA64_GRANT_TABLE_PADDR + ((i) << PAGE_SHIFT), \
+                               gnttab_shared_maddr(d, t, i)),                \
+            (IA64_GRANT_TABLE_PADDR >> PAGE_SHIFT) + (i);})
 
 #define gnttab_log_dirty(d, f) ((void)0)